<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>18 值类型和引用类型的区别</title>
    <style>
        h1 {
            text-align: center;
        }
    </style>
</head>

<body>
    <h1>18 值类型和引用类型的区别</h1>
</body>
<script>
    /* 
    
        值类型和引用类型区别
            * 值类型：string number boolean
            * 引用类型：array/object

        区别：
            * 存储的位置不同：值类型存在内存里面；引用类型存在堆内存里面
            * 销毁方式不同：值类型会被垃圾回收机制销毁

    */

    // 复制==拷贝
    var name1 = '宋雨琦';
    var name2 = name1;
    name2 = 'obj';

    console.log(name1, name2); // 拷贝成功

    // 数组的拷贝
    var arr1 = [1, 2, 3];
    var arr2 = arr1; // 直接写一个赋值符号，叫做引用对象，后期修改会影响到原来的数据
    // arr2.push(4, 8);
    console.log(arr1, arr2); // 拷贝失败

    // var arr1 = arr2 = null; // 消除引用，让垃圾回收机制回收

    // 数组浅度拷贝
    var arr = [1, 2, 3];
    var newarr = [];

    arr.forEach(function (item) {
        newarr.push(item);
    });
    newarr.push(7, 9);

    console.log(arr, newarr);

</script>

</html>